package edu.ustb.efws.pipeline.mapper;

import edu.ustb.efws.pipeline.domain.TableOpt;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 日志表处理数据操作
 *
 * @author Ts Group
 */
@Mapper
public interface TableOptMapper {

    /**
     * 新增日志操作
     *
     * @param t {@link TableOpt}
     * @return 插入条数
     */
    int insert(TableOpt t);

    /**
     * 更新操作日志为删除
     *
     * @param tableName 表名
     * @param month 月份
     * @param remark 备注
     * @return 修改条数
     */
    int updateDrop(@Param("tableName")String tableName, @Param("month")int month, @Param("remark") String remark);

    /**
     * 根据表名查询已经创建表的最大月份
     *
     * @param tableName 表名
     * @return 最大月份
     */
    Integer maxMonth(@Param("tableName")String tableName);

    /**
     * 表条数
     *
     * @param tableName 表名
     * @return 记录条数
     */
    int count(@Param("tableName")String tableName);

    /**
     * 查询创建记录
     *
     * @param tableName 表名
     * @param fromMonth 开始月份
     * @param toMonth 结束名称
     * @return 创建记录集合
     */
    List<TableOpt> find(@Param("tableName")String tableName, @Param("fromMonth")int fromMonth, @Param("toMonth")int toMonth);

    /**
     * 查询所有记录数
     *
     * @return 记录数
     */
    int countAll();
}
